#include <cstdio>
#include <vector>
int main(){
long t; scanf("%ld", &t);
while(t--){
long n; scanf("%ld", &n);
std::vector<long> a(n); for(long p = 0; p < n; p++){scanf("%ld", &a[p]);}
long mn(2e9), mx(-mn), diff(0);
for(long p = 0; p < n; p++){
if(p > 0 && a[p] < 0 && a[p - 1] >= 0){
mn = (mn < a[p - 1]) ? mn : a[p - 1];
mx = (mx > a[p - 1]) ? mx : a[p - 1];
}
if(p + 1 < n && a[p] < 0 && a[p + 1] >= 0){
mn = (mn < a[p + 1]) ? mn : a[p + 1];
mx = (mx > a[p + 1]) ? mx : a[p + 1];
}
if(p > 0 && a[p] >= 0 && a[p - 1] >= 0){
long cur = a[p] - a[p - 1];
if(cur < 0){cur = -cur;}
diff = (cur > diff) ? cur : diff;
}
}
long pick = (mn + mx) / 2;
long tmp = (mx - pick);
diff = (diff > tmp) ? diff : tmp;
printf("%ld %ld\n", diff, pick);
}
return 0;
}
770A - New Password | 1646B - Quality vs Quantity |
80A - Panoramix's Prediction | 1354B - Ternary String |
122B - Lucky Substring | 266B - Queue at the School |
1490A - Dense Array | 1650B - DIV + MOD |
1549B - Gregor and the Pawn Game | 553A - Kyoya and Colored Balls |
1364A - XXXXX | 1499B - Binary Removals |
1569C - Jury Meeting | 108A - Palindromic Times |
46A - Ball Game | 114A - Cifera |
776A - A Serial Killer | 25B - Phone numbers |
1633C - Kill the Monster | 1611A - Make Even |
1030B - Vasya and Cornfield | 1631A - Min Max Swap |
1296B - Food Buying | 133A - HQ9+ |
1650D - Twist the Permutation | 1209A - Paint the Numbers |
1234A - Equalize Prices Again | 1613A - Long Comparison |
1624B - Make AP | 660B - Seating On Bus |